# -*- coding: utf-8 -*-
"""
File Name: 百钱百鸡.py

@author: lengf
@date: 2025-04-14
@email: lengfo@163.com
@version: 1.0.0


求解《百钱百鸡》问题
1只公鸡5元 1只母鸡3元 3只小鸡1元 用100元买100只鸡
问公鸡 母鸡 小鸡各有多少只

"""

# 穷举法
# 算法：

for x in range(0, 20):      # 公鸡  穷举公鸡的可能取值数量   100/5=20
    for y in range(0, 33):  # 母鸡  穷举母鸡的可能取值数量   100/3-x=33
        z = 100 - x - y      # 小鸡  公鸡、母鸡、小鸡的总和为100，所以小鸡的数量为100-x-y
        if 5 * x + 3 * y + z / 3 == 100:     # 穷举，判断是否满足100元买100只鸡的条件
            print('公鸡: %d只, 母鸡: %d只, 小鸡: %d只' % (x, y, z))
            print(f'公鸡: {x}只, 母鸡: {y}只, 小鸡: {z}只')   # 格式化输出，使用f-string，更简洁

# 要理解程序背后的算法 - 穷举法
    # 公鸡、母鸡、小鸡的数量都是一个整数，所以可以用一个变量来表示，比如x。
    # 然后用两个循环来穷举所有可能的取值，比如x取值0-19，y取值0-32。
    # 然后计算小鸡的数量z，z = 100 - x - y。
    # 然后判断公鸡、母鸡、小鸡的数量是否满足100元买100只鸡的条件，如果满足，打印出结果。
    # 这样，程序会穷举出所有可能的组合，找到满足条件的组合。